package com.yuandian.management.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuandian.api.management.entity.ConfAgentStatusInfo;
import com.yuandian.bpm.common.data.datascope.BpmBaseMapper;
import com.yuandian.management.vo.AgentStatusInfoDb;
import com.yuandian.management.vo.AgentStatusInfoParams;
import com.yuandian.management.vo.AgentStatusInfoPojo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * Agent状态信息表-Mapper接口
 * @author zfsn
 * @date 2023-4-14
 */
@Mapper
public interface ConfAgentStatusInfoMapper extends BpmBaseMapper<ConfAgentStatusInfo> {

	/**
	 * 查询当前10分钟这些ip是否有数据，有前端就不能删除 String tableName,String ips,Date startTime
	 *
	 * @param map
	 * @return
	 */
	 List<AgentStatusInfoPojo> countTenMinuteInIps(Map map);

	/**
	 * 保存agent状态信息
	 *
	 * @param map
	 * @return
	 */
	int insertAgentStatusInfo(Map map);

	/**
	 * 统计当天表里面该agent重启次数
	 *
	 * @param map
	 * @return
	 */
	int countRebootNumByIp(Map map);

	/**
	 * 批量插入到数据库
	 *
	 * @param list
	 * @return
	 */
	int insertAgentStatusInfoBatch(@Param("list") List<AgentStatusInfoDb> list);

	/**
	 * 前端删除agent的时候查询十分钟该agent是否有数据，有就不能逻辑删除
	 *
	 * @param map
	 * @return
	 */
	List<ConfAgentStatusInfo> countTenMinuteGroupByIp(Map map);

	/**
	 * 统计断采个数、异常个数、正常个数
	 *
	 * @param map
	 * @return
	 */
	List<ConfAgentStatusInfo> countByAgentStatus(Map map);

	/**
	 * 查询当天该表的信息，按ip分组统计，参数是状态
	 * @param page
	 * @param map
	 * @return
	 */
	Page<ConfAgentStatusInfo> queryListGroupByIpAndStatus(Page<ConfAgentStatusInfo> page, @Param("params") AgentStatusInfoParams map);

	/**
	 * 查询当天的信息，按ip和状态查询
	 * @param page
	 * @param map
	 * @return
	 */
	Page<ConfAgentStatusInfo> queryListByIpAndAgentStatus(Page<ConfAgentStatusInfo> page,@Param("map")Map map);

	/**
	 * 查询断采top数据
	 *
	 * @param map
	 * @return
	 */
	 List<ConfAgentStatusInfo> getBreakTop(Map map);

	/**
	 * 查询异常top数据
	 *
	 * @param map
	 * @return
	 */
	 List<ConfAgentStatusInfo> getWrongTop(Map map);

	/**
	 * 前端操作，根据ip过滤掉当前的断采top排名
	 *
	 * @param map
	 * @return
	 */
	 int updateCollectTopStatusByIp(Map map);

	/**
	 * 前端操作，根据ip过滤掉当前的异常top排名
	 *
	 * @param map
	 *
	 * @return
	 */
	 int updateWrongTopStatusByIp(Map map);

	/**
	 * 前端获取最新的一个agent详情
	 *
	 * @param map
	 * @return
	 */
	 ConfAgentStatusInfo getAgentDetail(Map map);

	/**
	 * 前端获取最新的一个agent详情:根据时间获取历史表
	 *
	 * @param map
	 * @return
	 */
	 ConfAgentStatusInfo getAgentDetailByHistory(Map map);

	/**
	 * 丢包率历史曲线图
	 *
	 * @param map
	 * @return
	 */
	 List<ConfAgentStatusInfo> lostHistoryLine(Map map);

	/**
	 * 流量历史曲线图
	 *
	 * @param map
	 * @return
	 */
	 List<ConfAgentStatusInfo> speedHistoryLine(Map map);

	/**
	 * 根据ip获取该ip历史启动时间
	 *
	 * @param map
	 * @return
	 */
	 List<ConfAgentStatusInfo> rebootHistoryTime(Map map);

	/**
	 * 获取探针部署ip
	 *
	 * @param moduleName
	 * @return
	 */
	 List<String> getModuleManagement(@Param("moduleName") String moduleName);
	
}